package com.sogoodsoft.entity.crm;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.sogoodsoft.entity.IdEntity;
import com.sogoodsoft.entity.app.SysClass;

/**
 * VISIT对象模型
 */
@Entity
@Table(name = "VISIT")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Visit extends IdEntity {
    private static final long serialVersionUID = 1L;

    /** 预约或计划的下次拜访日期 */
    private Date nextdate;

    /** 本次拜访主题 */
    private String subject;

    /** 本次拜访结果 */
    private String result;

    /** 本次拜访期望值 */
    private String expect;

    /** 本次拜访是否完成有订单，1有，2无 */
    private Long withoder;

    /** 备注 */
    private String note;

    /** 是否下次拜访前短信提醒，1是2否 */
    private Long nextalert;

    /** 本次拜访类型，如面谈、电话、即时消息 */
    private SysClass visittype;

    /** 拜访者 系统用户ID */
    private Long visitorid;

    private String visitorname;

    /** 受访者 客户ID */
    private Long customerid;

    private String customername;

    /** 拜访日期 */
    private Date occurdate;

    /**
     * 短信发送类型的代码
     */
    @Transient
    public final static String smstype = "COMM_SEND_TYPE_DATE";

    /**
     * 获取预约或计划的下次拜访日期
     * 
     * @return 预约或计划的下次拜访日期
     */
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "NEXTDATE")
    public Date getNextdate() {
        return this.nextdate;
    }

    /**
     * 设置预约或计划的下次拜访日期
     * 
     * @param nextdate
     *            预约或计划的下次拜访日期
     */
    public void setNextdate(Date nextdate) {
        this.nextdate = nextdate;
    }

    /**
     * 获取本次拜访主题
     * 
     * @return 本次拜访主题
     */
    @Column(name = "SUBJECT")
    public String getSubject() {
        return this.subject;
    }

    /**
     * 设置本次拜访主题
     * 
     * @param subject
     *            本次拜访主题
     */
    public void setSubject(String subject) {
        this.subject = subject;
    }

    /**
     * 获取本次拜访结果
     * 
     * @return 本次拜访结果
     */
    @Column(name = "RESULT")
    public String getResult() {
        return this.result;
    }

    /**
     * 设置本次拜访结果
     * 
     * @param result
     *            本次拜访结果
     */
    public void setResult(String result) {
        this.result = result;
    }

    /**
     * 获取本次拜访期望值
     * 
     * @return 本次拜访期望值
     */
    @Column(name = "EXPECT")
    public String getExpect() {
        return this.expect;
    }

    /**
     * 设置本次拜访期望值
     * 
     * @param expect
     *            本次拜访期望值
     */
    public void setExpect(String expect) {
        this.expect = expect;
    }

    /**
     * 获取本次拜访是否完成有订单，1有，2无
     * 
     * @return 本次拜访是否完成有订单，1有，2无
     */
    @Column(name = "WITHODER")
    public Long getWithoder() {
        return this.withoder;
    }

    /**
     * 设置本次拜访是否完成有订单，1有，2无
     * 
     * @param withoder
     *            本次拜访是否完成有订单，1有，2无
     */
    public void setWithoder(Long withoder) {
        this.withoder = withoder;
    }

    /**
     * 获取备注
     * 
     * @return 备注
     */
    @Column(name = "NOTE")
    public String getNote() {
        return this.note;
    }

    /**
     * 设置备注
     * 
     * @param note
     *            备注
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * 获取是否下次拜访前短信提醒，1是2否
     * 
     * @return 是否下次拜访前短信提醒，1是2否
     */
    @Column(name = "NEXTALERT")
    public Long getNextalert() {
        return this.nextalert;
    }

    /**
     * 设置是否下次拜访前短信提醒，1是2否
     * 
     * @param nextalert
     *            是否下次拜访前短信提醒，1是2否
     */
    public void setNextalert(Long nextalert) {
        this.nextalert = nextalert;
    }

    /**
     * 获取本次拜访类型，如面谈、电话、即时消息
     * 
     * @return 本次拜访类型，如面谈、电话、即时消息
     */
    @ManyToOne(cascade = {}, fetch = FetchType.LAZY)
    @JoinColumn(name = "VISITTYPE")
    public SysClass getVisittype() {
        return this.visittype;
    }

    /**
     * 设置本次拜访类型，如面谈、电话、即时消息
     * 
     * @param visittype
     *            本次拜访类型，如面谈、电话、即时消息
     */
    public void setVisittype(SysClass visittype) {
        this.visittype = visittype;
    }

    /**
     * 获取拜访者 系统用户ID
     * 
     * @return 拜访者 系统用户ID
     */
    @Column(name = "VISITORID")
    public Long getVisitorid() {
        return this.visitorid;
    }

    /**
     * 设置拜访者 系统用户ID
     * 
     * @param visitorid
     *            拜访者 系统用户ID
     */
    public void setVisitorid(Long visitorid) {
        this.visitorid = visitorid;
    }

    @Column(name = "VISITORNAME")
    public String getVisitorname() {
        return visitorname;
    }

    public void setVisitorname(String visitorname) {
        this.visitorname = visitorname;
    }

    @Column(name = "CUSTOMERID")
    public Long getCustomerid() {
        return customerid;
    }

    public void setCustomerid(Long customerid) {
        this.customerid = customerid;
    }

    @Column(name = "CUSTOMERNAME")
    public String getCustomername() {
        return customername;
    }

    public void setCustomername(String custormername) {
        this.customername = custormername;
    }

    /**
     * 获取拜访日期
     * 
     * @return 拜访日期
     */
    @Temporal(TemporalType.DATE)
    @Column(name = "OCCURDATE")
    public Date getOccurdate() {
        return this.occurdate;
    }

    /**
     * 设置拜访日期
     * 
     * @param occurdate
     *            拜访日期
     */
    public void setOccurdate(Date occurdate) {
        this.occurdate = occurdate;
    }

}